<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>react体验</title>
  <!-- 引入react库文件 -->
  <!-- react核心库文件，生成虚拟dom和提供相关react操作的api方法 -->
  <script src="./js/react.js"></script>
  <!-- 把虚拟dom转为真实对应的应用端真实dom -->
  <script src="./js/react-dom.js"></script>
</head>

<body>
  <!-- 挂载点 -->
  <div id="root"></div>
  <script>

    // 有一个虚拟dom对象
    // react创建一个虚拟dom，它使用 React.createElement方法来完成
    // 参数1：指定创建的元素的名称，一般为html元素
    // 参数2：null|{} 对于生成的元素的属性设置,如果为null表没有属性
    // 参数3到N：指子元素
    const el = React.createElement

    // <h1 title="abc">你好React</h1>
    let vnode = el(
      'h1',
      { title: 'abc' },
      '你好React'
    );
    // 它就是一个对象 -- 虚拟dom -- fiberNode（js对象，它要符合一定的js对象的属性要求）
    /*
    {
      // $$typeof: Symbol(react.element)  // 让组件安全，私有化组件
      key: null  // diff比对时，提升性能提用
      props: {title: 'abc', children: '你好React'}  // 属性
      ref: null  // 组件引用对象 访问当前组件(默认只能是类组件，函数组件默认不行)
      type: "h1" // 当前组件他编译后生成的html标签类型
    }
    */
    console.log(vnode)
    // 把对应转为真实的dom，挂载到页面的节点中
    ReactDOM.render(vnode, document.querySelector('#root'))




  </script>

</body>

</html>